package org.hot100_5.leetcode279;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Map;

public class Solution {
    public int numSquares(int n) {

        int[] dp = new int[n + 1];
        Arrays.fill(dp, Integer.MAX_VALUE);
        dp[0] = 0;

        //完全背包，先物品，再容量
        for (int i = 1; i <= n; i++) {
            for (int j = i * i; j <= n; j++) {
                if (dp[j-i*i]!=Integer.MAX_VALUE){
                    dp[j]= Math.min(dp[j],dp[j-i*i]+1);
                }
            }
        }

        return dp[n];
    }
}
